<h2>Why is this an issue?</h2>
<p>Inconsistent naming conventions can lead to confusion and errors when working in a team. This rule ensures that all generic type parameter names
follow a consistent naming convention by checking them against a provided regular expression.</p>
<p>The default configuration follows Microsoft’s recommended convention:</p>
<ul>
  <li> Generic type parameter names must start with an upper case 'T', e.g. T </li>
  <li> The rest of the name should use Pascal casing, starting with an upper case character, e.g. TKey </li>
  <li> Short abbreviations of 2 letters can be capitalized, e.g. TFooID </li>
  <li> Longer abbreviations should be lowercased, e.g. TFooHtml </li>
</ul>
<h2>How to fix it</h2>
<p>To fix this issue, ensure that all generic type parameter names in your code follow the naming convention specified in the regular expression.</p>
<h3>Code examples</h3>
<h4>Noncompliant code example</h4>
<p>With the default parameter value <code>^T(([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?)?$</code>:</p>
<pre data-diff-id="1" data-diff-type="noncompliant">
Public Class Foo(Of tkey) ' Noncompliant
End Class
</pre>
<h4>Compliant solution</h4>
<pre data-diff-id="1" data-diff-type="compliant">
Public Class Foo(Of TKey) ' Compliant
End Class
</pre>
<h2>Resources</h2>
<h3>Documentation</h3>
<ul>
  <li> Microsoft Learn - <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generic-type-parameters">Generic Type
  Parameters (C# reference)</a> </li>
</ul>

